package com.powerbank.user.service;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 第三方支付适配器接口
 */
public interface ThirdPartyPaymentAdapter {

    /**
     * 创建支付订单
     *
     * @param orderNo     订单号
     * @param amount      支付金额
     * @param subject     支付主题
     * @param description 支付描述
     * @param clientIp    客户端IP
     * @param notifyUrl   回调URL
     * @param returnUrl   返回URL
     * @return 支付信息（包含支付链接、二维码等）
     */
    Map<String, String> createPayment(String orderNo, BigDecimal amount, String subject, 
                                      String description, String clientIp, String notifyUrl, String returnUrl);

    /**
     * 查询支付状态
     *
     * @param platformOrderId 第三方平台订单号
     * @return 支付状态信息
     */
    Map<String, String> queryPaymentStatus(String platformOrderId);

    /**
     * 处理支付回调
     *
     * @param callbackData 回调数据
     * @return 回调处理结果
     */
    Map<String, String> handleCallback(String callbackData);

    /**
     * 申请退款
     *
     * @param platformOrderId     第三方平台订单号
     * @param platformTransactionId 第三方平台交易号
     * @param refundAmount        退款金额
     * @param totalAmount         原始金额
     * @param refundReason        退款原因
     * @return 退款结果
     */
    Map<String, String> refund(String platformOrderId, String platformTransactionId, 
                               BigDecimal refundAmount, BigDecimal totalAmount, String refundReason);

    /**
     * 获取支付方式标识
     *
     * @return 支付方式
     */
    String getPaymentMethod();
}